<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>MongoDB“关于ReplSet成员必须为奇数”的说法，其实成员节点数目可以为偶数的 | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>MongoDB“关于ReplSet成员必须为奇数”的说法，其实成员节点数目可以为偶数的</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/MongoDB/">MongoDB</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;关于ReplSet成员必须为奇数的情况说明。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ReplSet优势：Replica Set是增加冗余及提升MongoDB数据集群性能的有效途径。数据在所有的节点中被复制，并选出一个作为主节点。假如主节点出故障，那么会在其他的节点中票选一个作为新的主节点。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;问题：在MongoDB中同一个RepliSet中的成员数量不能是偶数个。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;假如你使用了偶数个成员，那么当主节点发生故障时那么其它的节点都会变成只读。此时呢，无法选出PRIMARY节点。发生这种情况是因为剩下待选节点的数目不满足票选主节点的规定。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;结论：目前的MongoDB版本中，使用ReplSet机制成员数量必须控制在奇数数目个。</p>
<hr>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;以上是网上的结论，实际做测试发现网上的说法有误！</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;此文章中第二页有提到这个观点：<a href="https://hcldirgit.github.io/2017/08/27/MongoDB/11.%20MongoDB%20Master%EF%BC%9AMongoDB%E2%80%9C%E8%AF%9F%E7%97%85%E2%80%9D%E5%88%86%E6%9E%90/" target="_blank" rel="external">MongoDB Master：MongoDB“诟病”分析</a></p>
<hr>
<hr>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;测试结论：当ReplSet成员是2个时，PRIMARY挂了，的确SECONDARY无法升级为PRIMARY；但是，当ReplSet成员是4个时，PRIMARY挂了，SECONDARY的确是可以升级为PRIMARY的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当然，测试只是针对ReplSet成员为偶数情况；奇数情况是没有问题的。</p>

	

	
		<span class="different-posts"><a href="/2017/10/12/MongoDB/13. MongoDB“关于ReplSet成员必须为奇数”的说法，其实成员节点数目可以为偶数的/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
